package com.gravata.enigma.repositorio.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;

import com.gravata.enigma.activities.TelaInicial;
import com.gravata.enigma.model.Bouquet;
import com.gravata.enigma.model.Profile;
import com.gravata.enigma.model.Regra;
import com.gravata.enigma.repositorio.RepositorioBouquets;
import com.gravata.enigma.repositorio.RepositorioGenerico;

public class RepositorioBouquetsImpl extends RepositorioGenerico<Bouquet>
		implements RepositorioBouquets {

	public RepositorioBouquetsImpl(Context context) throws SQLException {
		super(context);
	}

	@Override
	public Bouquet porReference(String id, Profile profile) {
		try {
			return database.queryBuilder().where().eq("reference", id.trim()).and().eq("profile_id", profile).queryForFirst();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public void excluir(List<Bouquet> entidades) throws SQLException {

		for(Bouquet bouquet: entidades){
			excluir(bouquet);
		}

	}

	@Override
	public void excluir(Bouquet entidade) throws SQLException {
		if(entidade.getServices()!=null && !entidade.getServices().isEmpty())
			entidade.getServices().clear();

		super.excluir(entidade);
	}

	@Override
	public String getBouquetsTvFile(Profile profile) {

		String file="#NAME User - bouquets (TV)"+System.getProperty("line.separator");
		List<Bouquet> bouquets=listar(profile);
		for(Bouquet bouquet:bouquets){
			String ref=bouquet.getReference();
			file+=ref+System.getProperty("line.separator");
		}
		return file;
	}

	@Override
	public List<Bouquet> getBouquetComRegras(Profile profile) {
		List<Regra> regras=TelaInicial.repositorioRegra.listar(profile);

		List<Bouquet> bouquets=listar(profile);
		List<Bouquet> tmp=new ArrayList<Bouquet>();

		for(Bouquet bouquet:bouquets){
			for(Regra regra: regras){
				if(bouquet.getReference().equals(regra.getReference()))
					tmp.add(bouquet);
			}
		}
		return tmp;
	}

	@Override
	public void apagaVazios(Profile profile) {
		List<Bouquet> bouquets=listar(profile);
		for(Bouquet bouquet:bouquets){
			if(!bouquet.isFavorites()){
				if(bouquet.getServices().isEmpty())
					try {
						super.excluir(bouquet);
					} catch (SQLException e) {
						e.printStackTrace();
					}
			}
		}
	}

}